home *** CD-ROM | disk | FTP | other *** search
/ Computer Inter@ctive 17 / Computer Interactive cdrom 17 - gen 99.iso / ZDNETIT / CONTENT / OPTIVDOS.ZIP / INCLUDE.ZIP / VLISTD.H < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-21  |  7.1 KB  |  183 lines

  1. /*  VLIstd.h
  2.  
  3.   vector management functions for data type "long".
  4.  
  5.   Copyright (c) 1996-1998 by Martin Sander
  6.   All Rights Reserved.
  7. */
  8.  
  9. #ifndef __VLISTD_H
  10. #define __VLISTD_H
  11.  
  12. #if !defined( __VECLIB_H )
  13.    #include <VecLib.h>
  14. #endif
  15.  
  16. #ifdef __cplusplus
  17.    extern "C" {
  18. #endif
  19.  
  20. /**********************  Generation  ************************************/
  21.  
  22. liVector  __vf  VLI_vector( ui size );
  23. liVector  __vf  VLI_vector0( ui size );
  24.  
  25. /***************  Addressing single vector elements ******************/
  26.  
  27. long _VFAR * VLI_Pelement( liVector X, ui n );
  28.       /* returns a pointer to the n'th element of X. For the memory model
  29.          HUGE, the pointer is normalized. */
  30. #define VLI_element( X, n )  (*VLI_Pelement( X, n ))
  31.  
  32. /*********************** Initialization  ******************************/
  33.  
  34. void  __vf  VLI_equ0( liVector X, ui size );
  35. void  __vf  VLI_equC( liVector X, ui size, long C );
  36. void  __vf  VLI_equV( liVector Y, liVector X, ui size );
  37. void  __vf  VLIo_ramp( liVector X, ui size, long Start, long Rise );
  38. #ifdef V_trapIntError
  39.     #define VLI_ramp   VLIo_ramp
  40. #else
  41.     void  __vf  VLI_ramp( liVector X, ui size, long Start, long Rise );
  42. #endif
  43. long  __vf  VLI_random( liVector X, ui size, long seed,
  44.                         long MinVal, long MaxVal );  /*  returns new seed */
  45.  
  46.  
  47. /************** Data-type interconversions  ***************************/
  48.  
  49. void  __vf  Vo_LItoUL( ulVector Y, liVector X, ui size ); /* signed-unsigned */
  50. void  __vf  Vo_ULtoLI( liVector Y, ulVector X, ui size );
  51.  
  52. void  __vf  V_SItoLI( liVector Y, siVector X, ui size );  /* up-conversion */
  53. void  __vf  V_ItoLI(  liVector Y, iVector  X, ui size );
  54. void  __vf  V_LItoQI( qiVector Y, liVector X, ui size );
  55.  
  56. void  __vf  Vo_LItoSI( siVector Y, liVector X, ui size ); /* down-conversion */
  57. void  __vf  Vo_LItoI(  iVector  Y, liVector X, ui size );
  58. void  __vf  Vo_QItoLI( liVector Y, qiVector X, ui size );
  59. #ifdef V_trapIntError
  60.     #define V_LItoUL    Vo_LItoUL
  61.     #define V_ULtoLI    Vo_ULtoLI
  62.     #define V_LItoSI    Vo_LItoSI
  63.     #define V_LItoI     Vo_LItoI
  64.     #define V_QItoLI    Vo_QItoLI
  65. #else
  66.     void  __vf   V_LItoUL( ulVector Y, liVector X, ui size );
  67.     void  __vf   V_ULtoLI( liVector Y, ulVector X, ui size );
  68.     void  __vf   V_LItoSI( siVector Y, liVector X, ui size );
  69.     void  __vf   V_LItoI(  iVector  Y, liVector X, ui size );
  70.     void  __vf   V_QItoLI( liVector Y, qiVector X, ui size );
  71. #endif
  72.  
  73. void  __vf   V_LItoF(  fVector Y, liVector X, ui size );
  74. void  __vf   V_LItoD(  dVector Y, liVector X, ui size );
  75. #ifdef __BORLANDC__
  76.     void  __vf   V_LItoE(  eVector Y, liVector X, ui size );
  77. #else  /* no 80-bit IEEE reals with Visual C++ */
  78.     #define V_LItoE V_LItoD
  79. #endif
  80.  
  81.  
  82. /************** Index-oriented manipulations ***************************/
  83.  
  84. void  __vf  VLI_rev( liVector Y, liVector X, ui size );
  85. #ifdef V_HUGE
  86.     void  __vf  VLI_rotate( liVector Y, liVector X, ui size, long pos );
  87. #else
  88.     void  __vf  VLI_rotate( liVector Y, liVector X, ui size, int pos );
  89. #endif
  90.  
  91. void  __vf  VLI_delete( liVector X, ui size, ui pos );
  92. void  __vf  VLI_insert( liVector X, ui size, ui pos, long C );
  93.  
  94. void  __vf  VLI_sort( liVector Y, liVector X, ui size, int dir );
  95. void  __vf  VLI_sortind( uiVector Ind, liVector X, ui size, int dir );
  96.  
  97. void  __vf  VLI_subvector( liVector Y, ui sizey, liVector X, int samp );
  98. void  __vf  VLI_subvector_equC( liVector Y, ui subsz, unsigned samp, long C );
  99. void  __vf  VLI_subvector_equV( liVector Y, ui subsz, unsigned samp,
  100.                                 liVector X );
  101.  
  102. void  __vf  VLI_indpick( liVector Y, uiVector Ind, ui sizey, liVector X );
  103. void  __vf  VLI_indput(  liVector Y, liVector X, uiVector Ind, ui sizex );
  104.  
  105. ui    __vf  VLI_searchC( liVector XTab, ui size, long C, int mode );
  106. void  __vf  VLI_searchV( uiVector Ind, liVector X, ui sizex,
  107.                          liVector Tab, ui sizetab, int mode );
  108.  
  109. /********************   One-dimensional Vector Operations  ********/
  110.  
  111. long  __vf  VLIo_sum( liVector X, ui size );
  112. void  __vf  VLIo_runsum( liVector Y, liVector X, ui size );
  113. #ifdef V_trapIntError
  114.     #define VLI_sum       VLIo_sum
  115.     #define VLI_runsum    VLIo_runsum
  116. #else
  117.     long  __vf  VLI_sum( liVector X, ui size );
  118.     void  __vf  VLI_runsum( liVector Y, liVector X, ui size );
  119. #endif
  120. long   __vf  VLI_max( liVector X, ui size );
  121. long   __vf  VLI_min( liVector X, ui size );
  122. long   __vf  VLI_maxind( ui _VFAR *Ind, liVector X, ui size );
  123. long   __vf  VLI_minind( ui _VFAR *Ind, liVector X, ui size );
  124. void   __vf  VLI_runmax( liVector Y, liVector X, ui size );
  125. void   __vf  VLI_runmin( liVector Y, liVector X, ui size );
  126. double __vf  VLI_fsum( liVector X, ui size );
  127. double __vf  VLI_mean( liVector X, ui size );
  128.  
  129. int    __vf  VLI_iselementC( liVector Tab, ui size, long C );
  130. ui     __vf  VLI_iselementV( liVector Y, liVector X, ui sizex,
  131.                              liVector Tab, ui sizetab );
  132.  
  133.  
  134. /************************ Input / Output ******************************/
  135.  
  136. void  __vf   V_ifprint(  FILE _VFAR *stream, void _VFAR *X, ui size,
  137.                   unsigned nperline, unsigned linewidth, unsigned vers );
  138. #define VLI_fprint( st, x, sz, npl, lw ) \
  139.              V_ifprint(  st, (void _VFAR *)(x), sz, npl, lw, 6 )
  140.  
  141. #if !(defined _Windows || defined _WINDOWS)
  142.    void __vf  V_icprint(  void _VFAR *X, ui size, unsigned nperline, unsigned vers );
  143.    #define VLI_cprint( x, sz, npl ) \
  144.              V_icprint( (void _VFAR *) (x), sz, npl, 6 )
  145. #endif
  146. #define VLI_print( x, sz, npl ) \
  147.              V_ifprint(  stdout, (void _VFAR *)(x), sz, npl, 80, 6 )
  148.  
  149. void  __vf   V_setRadix( int radix );
  150.            /* radix to be assumed by all whole-number read functions V??_read */
  151. void  __vf   VLI_read( liVector X, ui size, FILE _VFAR *stream );
  152. void  __vf   VLI_write( FILE _VFAR *stream, liVector X, ui size );
  153. void  __vf   VLI_nread( unsigned n, ui size, FILE _VFAR *stream, ... );
  154. void  __vf   VLI_nwrite( FILE _VFAR *stream, unsigned n, ui size, ... );
  155. void  __vf   VLI_setWriteFormat( char _VFAR *FormatString );
  156.                                             /* for VLI_write and VLI_nwrite */
  157. void  __vf   VLI_setWriteSeparate( char _VFAR *SepString ); /* for VLI_write */
  158. void  __vf   VLI_setNWriteSeparate( char _VFAR *SepString ); /* for VLI_nwrite */
  159. #ifdef V_HUGE
  160.     void  __vf   VLI_store(  FILE _VFAR *stream, liVector X, ui size );
  161.     void  __vf   VLI_recall( liVector X, ui size, FILE _VFAR *stream );
  162. #else
  163.     #ifdef __cplusplus
  164.          void  inline VLI_store( FILE _VFAR *stream, liVector X, ui size )
  165.          {    fwrite( X, sizeof(long), size, stream ); 
  166.          }
  167.          void  inline VLI_recall( liVector X, ui size, FILE _VFAR *stream )
  168.          {    fread(  X, sizeof(long), size, stream );
  169.          }
  170.     #else
  171.         #define VLI_store( str, X, sz )  \
  172.                      fwrite( X, sizeof(long), sz, str )
  173.         #define VLI_recall( X, sz, str ) \
  174.                      fread(  X, sizeof(long), sz, str )
  175.     #endif
  176. #endif      /* VLI_store, VLI_recall in binary format */
  177.  
  178. #ifdef __cplusplus
  179. }
  180. #endif
  181.  
  182. #endif   /*  __VLISTD_H    */
  183.